Clarify parallel scheduler build#2104
Conversation
|
/ok to test 8cdf70e |
|
I see there are many build failures, but they don't look directly related to my changes. Perhaps applying the header only configuration is what is breaking the CI builds? 🤔 |
8cdf70e to
db9705d
Compare
|
I pushed some fixes. The MSVC and GCC-13 issues I was able to test locally. For the MacOS issue, missing support for |
|
/ok to test 030499f |
|
Okay. A more thorough reading of the MacOS failure revealed the problem. It's a cyclic include dependency: This should be solved by including only the necessary implementation headers in |
* Configure STDEXEC_PARALLEL_SCHEDULER_HEADER_ONLY appropriately based on STDEXEC_BUILD_PARALLEL_SCHEDULER. * If STDEXEC_BUILD_PARALLEL_SCHEDULER is off, define the parallel_scheduler target as an empty interface target. Create the STDEXEC::parallel_scheduler alias target unconditionally. * Build example.sudoku regardless of configuration. * Build tests using the user-defined stdexec namespace. * Remove local header-only macro override in parallel scheduler test. * Remove unneeded weak attribute from default parallel scheduler definition. The status quo with the weak attribute simply means that in the case of a missing definition, instead of producing an error, the linker ignores the symbol and creates a null reference. This ultimately results in a runtime segmentation fault when the parallel scheduler backend is queried.
030499f to
74f241f
Compare
|
I added a fix for the Windows build issue and removed the libdispatch commit. A fix is still needed for the cyclic include dependency I described above. |
|
/ok to test 74f241f |
Configure
STDEXEC_PARALLEL_SCHEDULER_HEADER_ONLYappropriately based onSTDEXEC_BUILD_PARALLEL_SCHEDULER.If
STDEXEC_BUILD_PARALLEL_SCHEDULERis off, define theparallel_schedulertarget as an empty interface target.Create the
STDEXEC::parallel_scheduleralias target unconditionally.Build
example.sudokuregardless of configuration.Build tests using the user-defined stdexec namespace.
Remove local header-only macro override in parallel scheduler test.
Remove unneeded weak attribute from default parallel scheduler definition.
The status quo with the weak attribute simply means that in the case of a missing definition, instead of producing an error, the linker ignores the symbol and creates a null reference. This ultimately results in a runtime segmentation fault when the parallel scheduler backend is queried.